#include "cpu/exec/template-start.h"

#define instr call

make_helper(concat(call_i_, SUFFIX)) {
	int len = concat(decode_i_, SUFFIX)(eip + 1); //计算指令的长度
	reg_l(R_ESP) -= DATA_BYTE; //esp - 4，为返回地址留出位置
	MEM_W(reg_l(R_ESP), cpu.eip + len + 1); //将返回地址写入内存
	cpu.eip += (DATA_TYPE_S)op_src->val; //将eip定位至函数所在位置
	print_asm("call: 0x%x", cpu.eip + len + 1); 
	return len + 1; // 返回这一条指令的长度
}



#include "cpu/exec/template-end.h"